package chapter_23;

/**
 * Created by Administrator
 * Created time 2018/8/9 18:37.
 * 利用内部类和 Lambda 表达式创建线程
 */
public class ThreadWithLambda {

    public static void main(String[] args) {

        // 创建线程t1, 参数是实现 Runnable 接口的匿名函数
        Thread t1 = new Thread(new Runnable() {
            // 编写执行线程代码
            @Override
            public void run() {
                for (int i = 1; i < 10; i++) {
                    // 打印次数和线程的名字
                    System.out.printf("第 %d次执行 - %s\n", i, Thread.currentThread().getName());

                    try {
                        // 随机生成休眠时间
                        long sleepTime = (long) (1000 * Math.random());
                        // 线程休眠
                        Thread.currentThread().sleep(sleepTime);
                    } catch (InterruptedException e) {
                    }
                }
                // 线程执行结束
                System.out.println("执行完成! " + Thread.currentThread().getName());
            }
        });
        // 开始线程t1
        t1.start();

        // 创建线程t1, 参数是实现 Runnable 接口的匿名函数
        Thread t2 = new Thread(() -> {
            for (int i = 1; i < 10; i++) {
                // 打印次数和线程的名字
                System.out.printf("第 %d次执行 - %s\n", i, Thread.currentThread().getName());

                try {
                    // 随机生成休眠时间
                    long sleepTime = (long) (1000 * Math.random());
                    // 线程休眠
                    Thread.currentThread().sleep(sleepTime);
                } catch (InterruptedException e) {
                }
            }
            // 线程执行结束
            System.out.println("执行完成! " + Thread.currentThread().getName());

        }, "MyThread");
        // 开始线程t1
        t2.start();
    }

}
